//
//  NWOAuthViewController.swift
//  微博01
//
//  Created by 牛威 on 15/12/8.
//  Copyright © 2015年 牛威. All rights reserved.
//

import UIKit
import SVProgressHUD

class NWOAuthViewController: UIViewController {
    
    
   private lazy var webView = UIWebView()
    
    
    
    //MARK: - 关闭webView
    
  @objc  private func close(){
    
    
        dismissViewControllerAnimated(true, completion: nil)
    
    }
    
    //MARK: - 自动填充 web注入 以代码的形式向web页面添加内容     
    @objc private func autoFill(){
    
        let js = "document.getElementById('userId').value = '81683367@qq.com';" + "document.getElementById('passwd').value = 'venn123';"
    
    webView.stringByEvaluatingJavaScriptFromString(js)
    
    }
    
    
    override func loadView() {
        
        view = webView
        
        //设置代理监听网络响应
        
        webView.delegate = self
        
        //设置导航栏
        
        title = "登录新浪微博"
        
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "关闭", style: .Plain, target: self, action: "close")
        
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "自动填充", style: .Plain, target: self, action: "autoFill")
        
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //在使用代码modal控制器的时候 为了不影响渲染效果应该设置背景色

        
//        view.backgroundColor = UIColor.whiteColor()
        
        //加载页面
        
        let request = NSURLRequest(URL: NetTools.shared.oauthURL)
        
        webView.loadRequest(request)
        
        
        
    }

}


//MARK: - 实现代理方法UIWebViewDelegate

extension NWOAuthViewController: UIWebViewDelegate {
    
    
    
    func webViewDidStartLoad(webView: UIWebView) {
        
        //开始转菊花
        
//        print("start")
        
        SVProgressHUD.show()
    }
    
    func webViewDidFinishLoad(webView: UIWebView) {
        
        //停止转菊花
        
//        print("end")
        
        SVProgressHUD.dismiss()
    }

    
     //通常ios的代理方法中,返回值是bool,一般情况是返回true可以正常工作,返回false不能正常工作
    
    /// 将要加载请求时调用的代理方法
    ///
    /// - parameter webView:        加载页面请求的webView
    /// - parameter request:        加载的请求
    /// - parameter navigationType: 页面跳转方式
    ///public enum UIWebViewNavigationType : Int {
    
    //    case LinkClicked  点击某一个链接跳转
    //    case FormSubmitted 页面表单里有个提交的按钮跳转
    //    case BackForward 前进后退
    //    case Reload 重新载入
    //    case FormResubmitted 本次提交可能造成重复购买,你确定要加载么
    //    case Other
    
    /// - returns: 返回false不能加载,返回true可以正常加载

    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        
        
        //判断主机地址是否是百度
        
        guard let url = request.URL where url.host == "www.baidu.com" else {
        
            
//            print("不加载百度")
            
            return true
        
        }
        
        //从url中 code=是否存在
        
        guard let query = url.query where query.hasPrefix("code=") else {
        
//            print("取消授权")
        
          return true
        
        }
        
        
        
        //提取code
        
        let code = query.substringFromIndex("code=".endIndex)
//        print("这是授权码 \(code)")
        
//         print(url.host)
        
//        print(url.query)
        
        
        //如果一个控制器的业务逻辑非常多,那就多建立几个视图模型分担任务
        
        //调用视图模型中的方法加载token
        
        UserAccountViewModel.sharedAccount.loadAccessToken(code) { (isSuccessed) -> () in
            
            if isSuccessed {
            
              
                print("成功了")
                
                print(UserAccountViewModel.sharedAccount.account)
            
            
            }else {
            
              
                print("失败了")
            
            
            }
        }
         return false
        
    }
    
    
}


